﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class Temp1OdGiDummyGeometry : OdGiViewportGeometry
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public Temp1OdGiDummyGeometry(IntPtr cPtr, bool cMemoryOwn) : base(GlobalsPINVOKE.Temp1OdGiDummyGeometry_SWIGUpcast(cPtr), cMemoryOwn)
		{
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(Temp1OdGiDummyGeometry obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		public override void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.deletePD_Temp1OdGiDummyGeometry(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
			base.Dispose();
		}

		public new virtual void circle(OdGePoint3d center, double radius, OdGeVector3d normal)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circle__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void circle(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circle__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void circularArc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d startVector, double sweepAngle, OdGiArcType arcType)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circularArc__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(startVector), sweepAngle, (int)arcType);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void circularArc(OdGePoint3d center, double radius, OdGeVector3d normal, OdGeVector3d startVector, double sweepAngle)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circularArc__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(center), radius, OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(startVector), sweepAngle);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void circularArc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint, OdGiArcType arcType)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circularArc__SWIG_2(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint), (int)arcType);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void circularArc(OdGePoint3d firstPoint, OdGePoint3d secondPoint, OdGePoint3d thirdPoint)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_circularArc__SWIG_3(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint), OdGePoint3d.getCPtr(thirdPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void polyline(OdGePoint3d[] numVertices, OdGeVector3d pNormal, IntPtr baseSubEntMarker)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_polyline__SWIG_0(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal), baseSubEntMarker);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void polyline(OdGePoint3d[] numVertices, OdGeVector3d pNormal)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_polyline__SWIG_1(this.swigCPtr, intPtr, OdGeVector3d.getCPtr(pNormal));
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void polyline(OdGePoint3d[] numVertices)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_polyline__SWIG_2(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void polygon(OdGePoint3d[] numVertices)
		{
			IntPtr intPtr = Teigha.Core.Helpers.MarshalPoint3dArray(numVertices);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_polygon(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void pline(OdGiPolyline polylPine, uint fromIndex, uint numSegs)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pline__SWIG_0(this.swigCPtr, OdGiPolyline.getCPtr(polylPine), fromIndex, numSegs);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void pline(OdGiPolyline polylPine, uint fromIndex)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pline__SWIG_1(this.swigCPtr, OdGiPolyline.getCPtr(polylPine), fromIndex);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void pline(OdGiPolyline polylPine)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pline__SWIG_2(this.swigCPtr, OdGiPolyline.getCPtr(polylPine));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void shape(OdGePoint3d position, OdGeVector3d normal, OdGeVector3d direction, int shapeNumber, OdGiTextStyle pTextStyle)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_shape(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(direction), shapeNumber, OdGiTextStyle.getCPtr(pTextStyle));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void text(OdGePoint3d position, OdGeVector3d normal, OdGeVector3d direction, double height, double width, double oblique, string msg)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_text__SWIG_0(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(direction), height, width, oblique, msg);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void text(OdGePoint3d position, OdGeVector3d normal, OdGeVector3d direction, string msg, bool raw, OdGiTextStyle pTextStyle)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_text__SWIG_1(this.swigCPtr, OdGePoint3d.getCPtr(position), OdGeVector3d.getCPtr(normal), OdGeVector3d.getCPtr(direction), msg, raw, OdGiTextStyle.getCPtr(pTextStyle));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void xline(OdGePoint3d firstPoint, OdGePoint3d secondPoint)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_xline(this.swigCPtr, OdGePoint3d.getCPtr(firstPoint), OdGePoint3d.getCPtr(secondPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void ray(OdGePoint3d basePoint, OdGePoint3d throughPoint)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_ray(this.swigCPtr, OdGePoint3d.getCPtr(basePoint), OdGePoint3d.getCPtr(throughPoint));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void nurbs(OdGeNurbCurve3d nurbsCurve)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_nurbs(this.swigCPtr, OdGeNurbCurve3d.getCPtr(nurbsCurve));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void ellipArc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointsOverrides, OdGiArcType arcType)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointsOverrides);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_ellipArc__SWIG_0(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr, (int)arcType);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public new virtual void ellipArc(OdGeEllipArc3d ellipArc, OdGePoint3d[] endPointsOverrides)
		{
			IntPtr intPtr = Helpers.MarshalPointPair(endPointsOverrides);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_ellipArc__SWIG_1(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc), intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				if (intPtr != IntPtr.Zero)
				{
					Marshal.FreeCoTaskMem(intPtr);
				}
			}
		}

		public new virtual void ellipArc(OdGeEllipArc3d ellipArc)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_ellipArc__SWIG_2(this.swigCPtr, OdGeEllipArc3d.getCPtr(ellipArc));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void mesh(MeshData numRows)
		{
			IntPtr intPtr = Helpers.MarshalMeshData(numRows);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_mesh(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void shell(ShellData numVertices)
		{
			IntPtr intPtr = Helpers.MarshalShellData(numVertices);
			try
			{
				GlobalsPINVOKE.Temp1OdGiDummyGeometry_shell(this.swigCPtr, intPtr);
				if (GlobalsPINVOKE.SWIGPendingException.Pending)
				{
					throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
				}
			}
			finally
			{
				Marshal.FreeCoTaskMem(intPtr);
			}
		}

		public new virtual void worldLine(OdGePoint3d points)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_worldLine(this.swigCPtr, OdGePoint3d.getCPtr(points));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setExtents(OdGePoint3d newExtents)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_setExtents(this.swigCPtr, OdGePoint3d.getCPtr(newExtents));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void pushClipBoundary(OdGiClipBoundary pBoundary)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pushClipBoundary(this.swigCPtr, OdGiClipBoundary.getCPtr(pBoundary));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void popClipBoundary()
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_popClipBoundary(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void draw(OdGiDrawable pDrawable)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_draw(this.swigCPtr, OdGiDrawable.getCPtr(pDrawable));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void pushModelTransform(OdGeMatrix3d xMat)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pushModelTransform__SWIG_0(this.swigCPtr, OdGeMatrix3d.getCPtr(xMat));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void pushModelTransform(OdGeVector3d normal)
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_pushModelTransform__SWIG_1(this.swigCPtr, OdGeVector3d.getCPtr(normal));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual void popModelTransform()
		{
			GlobalsPINVOKE.Temp1OdGiDummyGeometry_popModelTransform(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual OdGeMatrix3d getModelToWorldTransform()
		{
			OdGeMatrix3d result = new OdGeMatrix3d(GlobalsPINVOKE.Temp1OdGiDummyGeometry_getModelToWorldTransform(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdGeMatrix3d getWorldToModelTransform()
		{
			OdGeMatrix3d result = new OdGeMatrix3d(GlobalsPINVOKE.Temp1OdGiDummyGeometry_getWorldToModelTransform(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		private object locker = new object();

		private HandleRef swigCPtr;
	}
}
